﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace WcfServer
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
    [ServiceContract]
    public interface IServerService
    {
        /// <summary>
        /// Authenticate user and return the list of online contacts to the user
        /// </summary>
        /// <param name="loginInformation">Encrypted User Name, Password Hash, and any other necessary information as mentioned in protocol </param>
        /// <returns>Encrypted list of online users</returns>
        [OperationContract]
        byte[] AuthenticateUser(byte[] loginInformation);

        /// <summary>
        /// Clients Request connection to another client, and returns the necessary addresses and session keys
        /// </summary>
        /// <param name="connectionRequest"></param>
        /// <returns></returns>
        [OperationContract]
        byte[] GetConnectionInformation(byte[] connectionRequest);

        /// <summary>
        /// Clients Request New user registration.
        /// </summary>
        /// <param name="SignUpInfo"></param>
        /// <returns></returns>
        [OperationContract]
        String SignUp(byte[] SignUpInfo);
    }

    // Use a data contract as illustrated in the sample below to add composite types to service operations.
    // You can add XSD files into the project. After building the project, you can directly use the data types defined there, with the namespace "WcfServer.ContractType".
    
}
